package com.self.distributor;

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * 作者：tianjiayuan
 * 创建时间：2018-06-11 11:23
 * 类描述：
 * 修改人：
 * 修改时间：
 */
public class LockService {

    private static JedisPool jedisPool;

    private int n = 500;

    private DistributedLock lock = new DistributedLock(jedisPool);

    static {
        JedisPoolConfig config = new JedisPoolConfig();
        //设置最大连接数
        config.setMaxTotal(200);
        //设置最大空闲数
        config.setMaxIdle(20);
        //设置最大等待时间
        config.setMaxWaitMillis(1000*100);
        config.setTestOnBorrow(true);
        jedisPool = new JedisPool(config, "192.168.1.215", 7379, 3000, "nep@admin");
    }

    public void seckill() {
        // 返回锁的value值，供释放锁时候进行判断
        String identifier = lock.lockWithTimeout("resource", 5000, 1000);
        if (identifier == null) {
            System.out.println(Thread.currentThread().getName() + "未获得了锁 ");
        } else{
            System.out.println(Thread.currentThread().getName() + "获得了锁 " + identifier);
            System.out.println(--n);
            lock.releaseLock("resource", identifier);
        }
    }
}
